实操 本地docker配置环境
下载docker
https://www.docker.com/products/docker-desktop/
汉化:https://github.com/asxez/DockerDesktop-CN
准备工作:创建目录结构
在你的电脑上(例如 D:\ 盘)创建一个文件夹 D:\Desktop\damai_pro\DamaiEnv,并在其中创建以下子目录和文件,用于存放配置文件。
D:\DamaiEnv\
├── mysql\
│ ├── conf\
│ │ └── my.cnf <-- 需要新建此文件
│ ├── data\
│ └── log\
└── zookeeper\
├── conf\
│ └── zoo.cfg <-- 需要新建此文件
├── data\
└── logs\
第一步:创建 Docker 网络
为了让 Elasticsearch 和 Kibana 顺利通信,我们需要先创建一个专用网络 。
docker network create elk
第二步:安装 MySQL 5.7
1. 创建配置文件 在 D:\DamaiEnv\mysql\conf\ 下新建 my.cnf,内容如下 :
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
2.关闭本地运行的mysql服务,否则会因为3306被占用而无法启动容器中的mysql
3. 启动容器 注意:将 -v 后的路径改为你的实际路径。
docker run -d -p 3306:3306 --privileged=true -v D:\Desktop\damai_pro\DamaiEnv\mysql\log:/var/log/mysql -v D:\Desktop\damai_pro\DamaiEnv\mysql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci
4.开放MySQL权限
Docker 容器内的 MySQL 默认只允许 root 用户从 localhost 登录,而通过客户端(如 Navicat/DataGrip)连接时,来源 IP 是 Docker 网关 IP(例如 172.17.0.1),所以会被拒绝。
需要进入 MySQL 容器,修改 root 用户的权限,允许任意 IP 连接。
docker exec -it mysql bash
登录 MySQL(在容器内部):
mysql -u root -p
输入密码: root
执行授权 SQL:
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
exit;
退出容器:
exit
第三步:安装 Nacos (修复端口版)
文档中指出原命令缺少 9849 端口映射会导致无法启动,这里已补全 。
docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone -e nacos.core.auth.enabled=true -e nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789 -e nacos.core.auth.server.identity.key=XN3zr6HfJV%LjUPjRBQzBB -e nacos.core.auth.server.identity.value=B3CU%K3AxEAMrgPBdKLRQRL --name nacos-server nacos/nacos-server:v2.2.3
第四步:安装 Redis (修复密码版)
同理 关闭本机redis服务
文档指出原命令 -e requirepass 无效,需将密码命令放在镜像名之后 。
docker run -d --name redis -p 6379:6379 redis:6.0.8 --requirepass 123
第五步:安装 Zookeeper
1. 创建配置文件 在 D:\DamaiEnv\zookeeper\conf\ 下新建 zoo.cfg,内容如下 :
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
clientPort=2181
- 启动容器
docker run -d --name zookeeper --privileged=true -p 2181:2181 --restart=always -v D:\Desktop\damai_pro\DamaiEnv\zookeeper\data:/data -v D:\Desktop\damai_pro\DamaiEnv\zookeeper\conf:/conf -v D:\Desktop\damai_pro\DamaiEnv\zookeeper\logs:/datalog zookeeper
第六步:安装 Kafka
关键点:你需要获取你本机的 IP 地址(打开 CMD 输入 ipconfig,找到 IPv4 地址,例如 192.168.x.x)。不要使用 localhost 或 127.0.0.1,否则微服务可能连不上。
请将下方命令中的 YOUR_LOCAL_IP 替换为你的真实 IP :
比如我的本机 IP 是:172.20.10.5
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.20.10.5:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.20.10.5:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
注意:这里假设 Zookeeper 也是通过宿主机 IP 访问(即上面 Zookeeper 映射的 2181 端口)。
⚠️ 注意事项: 这个 IP (172.20.10.5) 看起来像是连接手机热点或特定局域网分配的。如果你断开网络或切换 Wi-Fi,这个 IP 可能会改变。如果 IP 变了,Kafka 可能会连不上,到时候需要删除旧容器(docker rm -f kafka)并用新 IP 重新运行这条命令。
第七步:安装 Elasticsearch (ES)
此步骤需要手动设置密码。
1. 启动容器
docker run -d --name es --net elk -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms768m -Xmx768m" -e "xpack.security.http.ssl.enabled=false" -e "xpack.security.enrollment.enabled=true" elasticsearch:8.5.2
初始化密码 (重要) 容器启动后(需等待几十秒),在 PowerShell 执行以下命令进入交互模式 :
docker exec -it es /bin/bash
进入容器内部后,执行:
./bin/elasticsearch-setup-passwords interactive
⚠️ 警告:设置密码时,不要使用纯数字,否则 Kibana 可能无法启动,建议使用 zxc321 或类似字母+数字组合 。请记住 elastic 和 kibana_system 用户的密码。(全设置为zw200495)
第八步:安装 Kibana
将下方命令中的 你的密码 替换为上一步设置的 kibana_system 用户的密码(或者 elastic 用户密码)。
demo:
docker run -d --name kibana --net elk -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://es:9200 -e ELASTICSEARCH_USERNAME="kibana_system" -e ELASTICSEARCH_PASSWORD="你的密码" -e "I18N_LOCALE=zh-CN" kibana:8.5.2
my:
docker run -d --name kibana --net elk -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://es:9200 -e ELASTICSEARCH_USERNAME="kibana_system" -e ELASTICSEARCH_PASSWORD="zw200495" -e "I18N_LOCALE=zh-CN" kibana:8.5.2
注:因为使用了 --net elk,这里 ELASTICSEARCH_HOSTS 可以直接用容器名 http://es:9200,无需宿主机 IP。
验证安装
-
Nacos: 访问
http://localhost:8848/nacos(账号密码均为 nacos)。
-
ES: 访问
http://localhost:9200(输入账号 elastic 和你设置的密码)。
-
Kibana: 访问
http://localhost:5601。(输入账号 elastic 和你设置的密码)。
-
MySQL/Redis: 使用客户端工具(如 Navicat, Redis Desktop Manager)连接
localhost测试。-
redis
-
mysql
账号密码都是root
-
企业级项目导航:⬅️ 01-实操 | 02-实操 本地docker配置环境 | ➡️ 03-实操 项目启动
💬 评论